﻿using System;
using System.Web;
using System.Collections.Generic;
using System.Data.SqlClient;
using KCL.Code.Data;

namespace KCL.Organization
{
    public class UserHandler : IHttpHandler
    {
        #region IHttpHandler Members
        public void ProcessRequest(HttpContext context)
        {
            // get parameters from query string
            var action = context.Request.Form["action"];

            var username = string.Empty;
            var password = string.Empty;
            var fullname = string.Empty;
            var email = string.Empty;
            var admin = string.Empty;
            var create = string.Empty;
            var edit = string.Empty;

            if (action != "delete")
            {
                username = context.Request.Form["username"].Replace("'", "''");
                password = context.Request.Form["password"].Replace("'", "''");
                fullname = context.Request.Form["fullname"].Replace("'", "''");
                email = context.Request.Form["email"].Replace("'", "''");
                admin = context.Request.Form["admin"];
                create = context.Request.Form["create"];
                edit = context.Request.Form["edit"];

                // return empty if question or keyword is missing
                if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
                {
                    context.Response.Write("alert(\"Tên đăng nhập & mật khẩu phải khác rỗng!\");");
                    return;
                }
            }

            var id = context.Request.Form["id"];

            context.Response.ContentType = "application/html";
            string code = string.Empty;
            
            UserDAO userDao = new UserDAO();
            try
            {
                if (action == "create")
					code = userDao.CreateUser(username, password, fullname, email, admin, create, edit);
                else if (action == "edit")
                    userDao.UpdateUser(id, username, password, fullname, email, admin, create, edit);
                else if (action == "delete")
                    userDao.DeleteUserByID(Convert.ToInt32(id));

            }
            catch (Exception ex)
            {
				context.Response.Write(string.Format("alert(\"Có lỗi: {0}\");", ex.Message.Replace("\r\n", "\\n")));
                return;
            }

            if (action == "create")
				context.Response.Write(string.Format("$('#divCreateUser').dialog('close'); alert('Thêm người dùng mới thành công.\\nMã người dùng là {0}'); location.reload(true);", code));
            else if (action == "edit")
                context.Response.Write(string.Format("$('#divCreateUser').dialog('close'); alert('Chỉnh sửa công ty thành công.'); RefreshUser({0});", id));
            else if (action == "delete")
				context.Response.Write("alert('Xóa người dùng thành công.'); location.reload(true);");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        #endregion
    }
}